
package Persistencia;

import Negocio.Medico;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Victor
 */
public class Medicos {
    
    
    
    private static List medicos;

    public Medicos() {
        
        medicos = new ArrayList<Medico>();
        leitura();
    }
    
    public void grava() 
    {
        try {
            FileOutputStream fo = new FileOutputStream("src/Serializados/Medicos.dat");
            ObjectOutputStream oo = new ObjectOutputStream(fo);
            oo.writeObject(medicos);
            oo.close();
            System.out.println("Dados gravados com sucesso");
        } catch (Exception e) {
            System.err.println("Erro ao serializar " + e.getMessage());
        }
    }

    public void leitura() 
    {
        try {
            File arq = new File("src/Serializados/Medicos.dat");
            FileInputStream fi = new FileInputStream(arq.getAbsolutePath());
            ObjectInputStream oi = new ObjectInputStream(fi);
            medicos = (ArrayList) oi.readObject();
            oi.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    
    public Medico buscarMedicoPorNome(String pNome) {
        
        Medico retorno = null;
        for (int i = 0; i < medicos.size(); i++) 
        {
            Medico l = (Medico) medicos.get(i);
            if (l.getNome().toLowerCase().contains(pNome.toLowerCase())) 
            {
                retorno = l;
                break;
            }
        }
        return retorno;
    }
    
   public Medico buscarMedicoPorParteDeNome(String pNome) {
        
        Medico retorno = null;
        for (int i = 0; i < medicos.size(); i++) 
        {
            Medico l = (Medico) medicos.get(i);
            if (l.getNome().toLowerCase().contains(pNome.toLowerCase())) 
            {
                retorno = l;
                break;
            }
        }
        return retorno;
    }
   
      public Medico buscarMedicoPorCRM(String pCRM) {
        
        Medico retorno = null;
        for (int i = 0; i < medicos.size(); i++) 
        {
            Medico l = (Medico) medicos.get(i);
            
            if (l.getCRM().equals(pCRM)) 
            {
                retorno = l;
                break;
            }
        }
        return retorno;
    }

    public ArrayList<Medico> getMedicos() 
    {
        return (ArrayList<Medico>) medicos;
    }

    public void adiciona(Medico p) 
    {
        medicos.add(p);
        grava();
    }
    
    public void excluirMedico(Medico p)
    {
        medicos.remove(p);
        grava();
    }   
}